package com.bzkj.document.exception;

/**
 * @ClassName ValidationException
 * @Description 自定义异常：TODO
 * @Author C1309
 * @Date 2025/5/9 13:44
 */
public class ValidationException extends RuntimeException {

    // 错误码
    private final String errorCode;
    // 错误字段
    private final String fieldName;
    // 错误值
    private final Object invalidValue;

    /**
     * 构造函数
     * @param errorCode 错误码
     * @param message 错误信息
     * @param fieldName 错误字段名
     * @param invalidValue 无效的值
     */
    public ValidationException(String errorCode, String message, String fieldName, Object invalidValue) {
        super(message);
        this.errorCode = errorCode;
        this.fieldName = fieldName;
        this.invalidValue = invalidValue;
    }

    /**
     * 构造函数
     * @param message 错误信息
     */
    public ValidationException(String message) {
        this("VALIDATION_ERROR", message, null, null);
    }

    /**
     * 简化版构造函数
     * @param message 错误信息
     * @param fieldName 错误字段名
     */
    public ValidationException(String message, String fieldName) {
        this("VALIDATION_ERROR", message, fieldName, null);
    }

    // Getter方法
    public String getErrorCode() {
        return errorCode;
    }

    public String getFieldName() {
        return fieldName;
    }

    public Object getInvalidValue() {
        return invalidValue;
    }

    @Override
    public String toString() {
        return "ValidationException{" +
                "errorCode='" + errorCode + '\'' +
                ", message='" + getMessage() + '\'' +
                ", fieldName='" + fieldName + '\'' +
                ", invalidValue=" + invalidValue +
                '}';
    }
}
